package com.back.controller;

import com.back.common.utils.Result;
import com.back.security.annotation.RequireRole;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

/**
 * 管理员控制器
 * 提供管理员专有功能
 */
@RestController
@RequestMapping("/admin")
@Api(tags = "管理员功能接口")
@Slf4j
public class AdminController {

    /**
     * 获取系统统计数据
     * 使用Spring Security的@PreAuthorize注解控制权限
     */
    @ApiOperation(value = "获取系统统计数据")
    @GetMapping("/statistics")
    @PreAuthorize(value = "hasRole('ADMIN')")
    public Result getStatistics() {
        return Result.ok().message("获取系统统计数据成功").data("userCount", 100).data("jobCount", 50);
    }

    /**
     * 审核企业认证
     * 使用自定义的@RequireRole注解控制权限
     */
    @ApiOperation(value = "审核企业认证")
    @PostMapping("/verify/company/{id}")
    @RequireRole("ADMIN")
    public Result verifyCompany(@PathVariable Long id, @RequestParam String status, @RequestParam String reason) {
        log.info("管理员审核企业ID: {}, 状态: {}, 原因: {}", id, status, reason);
        return Result.ok().message("企业审核操作成功");
    }

    /**
     * 审核职位发布
     */
    @ApiOperation(value = "审核职位发布")
    @PostMapping("/verify/job/{id}")
    @RequireRole("ADMIN")
    public Result verifyJob(@PathVariable Long id, @RequestParam String status, @RequestParam String reason) {
        log.info("管理员审核职位ID: {}, 状态: {}, 原因: {}", id, status, reason);
        return Result.ok().message("职位审核操作成功");
    }

    /**
     * 获取系统日志
     */
    @ApiOperation(value = "获取系统日志")
    @GetMapping("/logs")
    @RequireRole("ADMIN")
    public Result getLogs(@RequestParam(required = false, defaultValue = "1") Integer page, 
                          @RequestParam(required = false, defaultValue = "10") Integer size) {
        log.info("管理员获取系统日志, 页码: {}, 每页大小: {}", page, size);
        return Result.ok().message("获取系统日志成功");
    }
} 